Software performance testing is an important part for software quality control. In a standard software development flow, each software version has to go through several rounds of performance testing before its release or delivery to a client, so as to guarantee that the software can run normally in the operating environment after delivery. Reliable software performance testing requires consistency between the hardware environment for the testing and the hardware environment where the software is finally deployed for operation. However, in most cases, the target hardware performance of a software product is relatively high, and the hardware environment of the existing software testing platform of a software developer (or software delivering party) always cannot reach such a requirement, while purchasing new hardware devices is restricted by both funds and purchase time. In the practice of software performance testing, the above problem is mainly solved by comprehensively utilizing the approaches of real testing and prediction. In other words, meticulous software performance testing is performed in an existing test environment with a relatively lower hardware performance, and based on the resulting testing result, software performance in a high performance target hardware environment may be predicted. However, this method has drawbacks in the following three aspects: 1. the real testing needs more test cases; 2. the quality of prediction is especially dependent on the experience and expertise of testing staff; 3. in view of the inherent uncertainty of the prediction per se, a conservative performance estimation is always adopted in performance prediction, which leads to an inaccurate performance evaluation, causing extra software development costs or software operating costs.
In recent years, the computer application field witnesses an upsurge of virtual machines and virtualization technology. For virtual machines, the virtualization technology is an integration of technologies of designing virtual computers. The virtualization technology may expand hardware capacity and simplify software re-configuration process. For example, the CPU virtualization technology may emulate a multi-CPU parallel operation using a single CPU and allow running a plurality of operating systems on one platform simultaneously; besides, application programs may run within mutually independent spaces without affecting one another. In this way, working efficiency of a computer can be significantly improved. The existing virtual machine technology may functionally emulate a high performance server on a relatively low performance server. However, such a virtual machine can not provide the operating performance of a real high performance server. Therefore, it cannot be used for software performance testing. In consideration of the extra system overheads of running a virtual environment, software performance testing also expects a hardware environment with performance higher than the target environment. However, this will cause extra software development costs to purchase different hardware devices corresponding to different target hardware environments.
Therefore, there is a need for a method for creating a software performance testing environment based on a virtual machine.